/**
  * Author: Mei
  * Date: 2020-10-16 20:52
  * Description：输入输出和流对象
  *
  */
#include <iostream>
#include <iomanip>

using namespace std;

int main() {
    //float grade;
    //cout << "enter grade:";
    //while (cin >> grade) {
    //    if (grade >= 85) {
    //        cout << grade << " GOOD" << endl;
    //    }
    //    if (grade < 60) {
    //        cout << grade << " fail" << endl;
    //    }
    //    cout << "enter grade:";
    //}
    //cout << "The end." << endl;
    /**
     * 1、流运算符>>从流中提取数据时，通常跳过流中的空格、tab键、换行符等空白字符
     * 2、只有在输入完数据再按回车键，该行数据才被送入键盘缓冲区，形成输入流，
     * 提取运算符”>>“才能从中提取数据
     * 3、当遇到无效字符或文件结束符(^Z)时，cin无法正常提取数据，处于出错状态，返回0值（false）
     *  while(cin>>grade) if(!cin)
     */

    /**
     * 输入的流成员函数-get函数
     * cin.get(char[], 20, '/') 有多个重载的函数
     * cin.getline(char[], 20, '/')函数 从输入流中读取一行字符 遇到空白符不结束/换行才结束
     * 读19个字符或者遇到‘/'才结束
     *
     */

    //char c;
    //while (!cin.eof()) {
    //    if ((c = cin.get()) != ' ') {
    //        cout.put(c);
    //    }
    //}
    /**
     * 判断输入（文件）是否结束----eof(end of file)函数
     * 如果到达文件末尾 则eof函数值为非零值
     *
     */

    char c[20];
    int ch;
    cout << "please enter a sentence:" << endl;
    cin.getline(c, 15, '/');
    cout << "The first paret is:" << c << endl;
    ch = cin.peek(); //返回指针指向的当前字符，取当前字符的ask码值
    cout << "next character:" << char(ch) << endl;
    cin.putback(c[0]); // 把c[0]插入到当前指针
    cin.getline(c, 15, '/'); //
    cout << "The second part is:" << c << endl; //从当前指针开始读

    /**
     * ifstream 文件输入流(从外部文件输入内存)进行文件的读操作
     * ofstream 文件输出流(从内存输出到文件中)进行文件的写操作
     *
     */


    return 0;
}